// 引入创建slice和异步的方法
import { createSlice } from '@reduxjs/toolkit'

// 创建slice
export default createSlice({
  name: 'todoList', // slice的名称,action对象的type中作为前缀
  initialState: {
    // 初始数据
    todos: [{ id: 1, todoName: '吃饭', isDone: true }],
    editId: undefined, // 注意:如果初始值是undefined,则在redux调试工具中不显示
  },
  // reducer函数和actionCreator
  reducers: {
    // 添加任务
    addTodo(state, action) {
      // 根据任务名创建任务对象
      const todo = {
        id: state.todos.length ? state.todos[state.todos.length - 1].id + 1 : 1,
        todoName: action.payload,
        isDone: false,
      }
      // 将新的任务对象添加到todos中
      state.todos.push(todo)
    },

    // 修改editId
    setEditId(state, action) {
      state.editId = action.payload
    },

    // 修改任务名
    setTodoName(state, action) {
      // 要传递过来两个参数: 1. 被修改的任务对象的id 2. 新的任务名
      const { id, todoName } = action.payload
      // 遍历找到要修改的任务,然后修改任务名
      state.todos.forEach((item) => {
        if (item.id === id) item.todoName = todoName
      })
    },
  },
})
